package com.airhacks.loadr; import com.sun.net.httpserver.HttpContext; import com.sun.net.httpserver.HttpServer; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.InetSocketAddress; import java.util.function.Consumer; import java.util.function.Supplier; import java.util.stream.Collectors; /** * * @author airhacks.com */ public class HttpService { public static HttpServer startServer(String path, Supplier<String> request, Consumer<String> response) throws IOException { HttpServer httpServer = HttpServer.create(new InetSocketAddress(4221), 0); HttpContext context = httpServer.createContext(path); context.setHandler((he) -> { final byte[] bytes = request.get().getBytes(); he.sendResponseHeaders(200, bytes.length); final OutputStream output = he.getResponseBody(); InputStream input = he.getRequestBody(); response.accept(read(input)); output.write(bytes); output.flush(); he.close(); }); httpServer.start(); return httpServer; } public static String read(InputStream input) throws IOException { try (BufferedReader buffer = new BufferedReader(new InputStreamReader(input))) { return buffer.lines().collect(Collectors.joining("\n")); } } }